User connector based on organization graph

ABSTRACT

A system and method for identifying a user is described. The system identifies collaboration metrics based on user interaction data of users of an application from an enterprise. The system accesses enterprise organizational data of the enterprise and identifies topic data from the user interaction data and the enterprise organizational data. The system trains a machine learning model based on the collaboration metrics, the enterprise organizational data, and the topic data.

CROSS-REFERENCE TO RELATED APPLICATIONS

This application is a continuation of prior U.S. application Ser. No.16/739,393, filed on Jan. 10, 2020, which is incorporated by referenceherein in its entirety.

TECHNICAL FIELD

The subject matter disclosed herein generally relates to aspecial-purpose machine that analyzes communications between clientdevices, including computerized variants of such special-purposemachines and improvements to such variants. Specifically, the presentdisclosure addresses systems and methods for ranking users based onenterprise organizational data and interaction data of users of anenterprise application.

BACKGROUND

Interactions among users via an application within an enterprise settingmay be difficult to be evaluated given the noise of the interaction databetween the users. Furthermore, profile data provided by users or anadministrator of a directory application associated with the enterpriseapplication become outdated when the administrator does not update theprofile data of a user.

BRIEF DESCRIPTION OF THE SEVERAL VIEWS OF THE DRAWINGS

To easily identify the discussion of any particular element or act, themost significant digit or digits in a reference number refer to thefigure number in which that element is first introduced.

FIG. 1 is a diagrammatic representation of a networked environment inwhich the present disclosure may be deployed, in accordance with oneexample embodiment.

FIG. 2 is a diagrammatic representation of interactions between users inan enterprise, in accordance with one example embodiment.

FIG. 3 is a block diagram illustrating a graph engine in accordance withone example embodiment.

FIG. 4 is a block diagram illustrating a network analysis engine inaccordance with one example embodiment.

FIG. 5 is a block diagram illustrating a user experience module inaccordance with one example embodiment.

FIG. 6 is a flow diagram illustrating a method for generating a graph inaccordance with one example embodiment.

FIG. 7 is a flow diagram illustrating a method for identifying an expertuser in accordance with one example embodiment.

FIG. 8 is a flow diagram illustrating a method for identifying an expertuser in accordance with one example embodiment.

FIG. 9 is a flow diagram illustrating a method for identifying aninfluencer in accordance with one example embodiment.

FIG. 10 is a flow diagram illustrating a method for identifying skilledusers in accordance with one example embodiment.

FIG. 11 is a flow diagram illustrating a method for generating a unifiedgraph in accordance with one example embodiment.

FIG. 12 illustrates an example of a unified graph in accordance with oneexample embodiment.

FIG. 13 illustrates a routine 1300 in accordance with one exampleembodiment.

FIG. 14 is a diagrammatic representation of a machine in the form of acomputer system within which a set of instructions may be executed forcausing the machine to perform any one or more of the methodologiesdiscussed herein, according to an example embodiment.

DETAILED DESCRIPTION

The description that follows describes systems, methods, techniques,instruction sequences, and computing machine program products thatillustrate example embodiments of the present subject matter. In thefollowing description, for purposes of explanation, numerous specificdetails are set forth in order to provide an understanding of variousembodiments of the present subject matter. It will be evident, however,to those skilled in the art, that embodiments of the present subjectmatter may be practiced without some or other of these specific details.Examples merely typify possible variations. Unless explicitly statedotherwise, structures (e.g., structural components, such as modules) areoptional and may be combined or subdivided, and operations (e.g., in aprocedure, algorithm, or other function) may vary in sequence or becombined or subdivided.

Directories of enterprise users' profiles are often prone to becomeoutdated because the directories rely on proactive input and regularupdates from the users. Users rarely update their profile data (e.g.,skills attribute, project attribute, specialty attribute) in anenterprise directory of an enterprise. As such, it may be difficult toascertain relationships between users based on skill attributes. Forexample, a first user may have difficulty identifying a second user whohas demonstrated an expertise in a particular field or topic because thesecond user has failed to update his/her user profile data (e.g., skillattribute) in the enterprise directory. The first user and second usermay be users of an application and are part of an enterprise. Anenterprise represents organizations or groups of users associated withan organization.

As a result, one or more of the methodologies described hereinfacilitate solving the technical problem of identifying users based ontheir outdated, unknown, or incorrect user profile data (e.g., outdatedskill attribute). Data from a directory application is often manuallyinputted or updated by an administrator or the user of the applicationassociated with the directory application. However, manual update ofdata is often prone to error and inaccuracies and can lead a first userto incorrectly identify a second user based on inaccurate user profiledata. As such, one or more of the methodologies described herein mayobviate a need for certain efforts or computing resources (e.g.,monitoring and manually updating various attributes of the user profileof every user of an enterprise). Examples of such computing resourcesinclude processor cycles, network traffic, memory usage, data storagecapacity, power consumption, network bandwidth, and cooling capacity.

The present application describes a machine learning model that istrained and used to generate a graph (also referred to as unified peopleor personnel graph) that indicates personnel (also referred to as peopleor users) organizational network relationships (e.g., project manager,lead engineer), collaborations topics (e.g., project x), collaborationpatterns (e.g., weekly team meetings, chat activities on weekends),network metrics (e.g., degree of connections, reach index (closeness),page index (influence index), collaboration strength on topics), skills(e.g., expert on topic x), projects (e.g., user worked on project x),time zone (e.g., user in located in PST time zone), network degree ofconnection of expert from requestor (e.g., user x and user y both reportto user z), reach index of expert (e.g., size of user x social networkin the enterprise), expert page rank (e.g., ranking of user x on topic xwithin the enterprise), collaboration time of expert on topic (e.g.,user x has worked on topic x for one year), past requests response timesfrom experts (e.g., user x replies to user y's request to help on topicx within one day), request response rate of experts (e.g., user xreplies to 1 out of 10 requests for help on topic x), referralrecommendations (e.g., user x refers user y to user z), open requests inexperts queue (e.g., user x has 5 expert requests on topic x in a queueof user x who is highly ranked as an expert for topic x). The unifiedpeople graph can be used to help identify experts based on theself-updated data (e.g., user x updates a profile on the enterprisedirectory that lists topic x in a skill attribute).

The present application describes a graph model built usingcollaboration/topic analysis and network analysis on collaboration datafrom an enterprise application (or collaboration data from otherthird-party applications). The unified graph contains graph verticesderived from collaboration data (e.g., people and topics connected ingraph as per their relations in the enterprise). The unified graph isbased on organizational data and user profile about users of theenterprise. The organization data includes, for example, as HumanResource (HR) attributes, skills attributes, projects attributes,Customer Relationship Management (CRM) data, specific applications data.A machine learning model updates the unified graph (without anadministrator or an enterprise user having to manually update his/herprofile data) using the latest collaboration data (as users interactwith each other via the enterprise application). As such, the unifiedgraph is automatically generated and regularly updated based on passivecollaboration data from enterprise applications (e.g., emailapplication, calendar application, chat application, intranetapplication, storage application) in the organization without any activeinvolvement (e.g., manual update of user profile in the directory) fromenterprise users of the organization.

In one example, the application receives, from the first user, a requestfor help for a particular field or topic (e.g., topic x). Theapplication uses the graph to identify a second user that may be anexpert in topic x as inferred from collaboration data based onenterprise organizational data (e.g., network degree of separationbetween the first and second users (e.g., lowest number of degrees ofseparation)). Other examples of identifying the second user may befiltering users with inferred expertise in topic x, where the filteredusers are from a group of peer engineers, team leaders, projectmanagers, and so forth. The application communicates the request forhelp (optionally identifying the first user) to the second user. Theapplication maintains the anonymity of the second user to the first useruntil the second user approves the request.

In another example, the directory application updates the user profiledata of the second user (e.g., update a value of the skill attribute toinclude project x) based on the collaboration/topic data (from theenterprise application) related to the second user. In a furtherexample, the directory application generates a new attribute (e.g.,possible/inferred skill attribute) based on the inferred skills of thesecond user and the collaboration/topic data in the user profile data ofthe second user (without modifying a value of the skill attribute in theuser profile data of the second user).

The present application describes a system and method for generating agraph that models organizational relational network graph is described.The graph can be used to identify an enterprise user with a skill orexpertise attribute in relation to another enterprise user. In oneexample embodiment, the system identifies collaboration metrics based onuser interaction data of enterprise users of enterprise applications.The system accesses enterprise organizational data of the enterprise andidentifies topic data from the user interaction data and the enterpriseorganizational data. The system trains a machine learning model based onthe collaboration metrics, the enterprise organizational data, and thetopic data.

FIG. 1 is a diagrammatic representation of a network environment 100 inwhich some example embodiments of the present disclosure may beimplemented or deployed. One or more application servers 104 provideserver-side functionality via a network 102 to a networked user device,in the form of a client device 106. A user 134 operates the clientdevice 106. The client device 106 includes a web client 112 (e.g., abrowser), a programmatic client 108 (e.g., an email/calendar applicationsuch as Microsoft Outlook (TM), an instant message application, adocument writing application, a shared document storage application)that is hosted and executed on the client device 106.

In one example embodiment, the programmatic client 108 includes anexpert finder module 110 that enables the user 134 to search for orsubmit a query for an expert user (e.g., a user from the same ordifferent enterprise who is ranked higher than other users of theenterprise in regard to a topic and has the lowest number degree ofseparation from the user 134). In another example embodiment, the expertfinder module 110 monitors interaction data from the web client 112 andthe programmatic client 108 to the application servers 104. Theinteraction data identifies items that are communicated from anotheruser of an enterprise to the user 134 and from the user 134 to anotheruser of the enterprise. Examples of interaction data include but are notlimited to email communications, meeting communications, instantmessages, shared document comments, and any communication with arecipient (e.g., a user from the enterprise). The expert finder module110 uses the interaction data to help identify the expert user. It isnoted that the expert finder module 110 represents one example of a userfeature provided by a graph engine 128 that forms a social graph basedon interaction/collaboration data and user profile data.

The expert finder module 110 may operate with the web client 112 and/orthe programmatic client 108. In another example embodiment, the expertfinder module 110 is part of the programmatic client 108 or web client112. For example, the expert finder module 110 may operate as anextension or add on to the web client 112. The expert finder module 110communicates with the application servers 104.

An Application Program Interface (API) server 120 and a web server 122provide respective programmatic and web interfaces to applicationservers 104. A specific application server 118 hosts an enterpriseapplication 124, a directory application 126, and the graph engine 128.The enterprise application 124, the directory application 126, and thegraph engine 128 include components, modules and/or applications.

The enterprise application 124 may include an application operated bythe enterprise 224. Examples of enterprise application 124 includecollaborative applications (e.g., a server side email/calendarenterprise application, a server side instant message enterpriseapplication, a document writing enterprise application, a shareddocument storage enterprise application) that enable users of anenterprise to collaborate and share document, messages, and other data(e.g., meeting information, common projects) with each other. Forexample, the user 134 at the client device 106 may access the enterpriseapplication 124 to edit documents that are shared with other users ofthe same enterprise. In another example, the client device 106 accessesthe enterprise application 124 to retrieve or send messages or emails toand from other peer users of the enterprise. Other examples ofenterprise application 124 includes content management systems, andknowledge management systems.

The directory application 126 includes a directory application (alsoreferred to as active directory) that maintains enterpriseorganizational data. One example of enterprise organizational datainclude user profile data of enterprise users of the enterprise. Forexample, an enterprise user profile of an enterprise user includes auser ID, a user email, a user department, a user manager, user groupprojects, user employment status, user skills, user expertise, userexperience, user background, any information provided by otherdepartment (e.g., Human Resource), and so forth. In another exampleembodiment, the directory application 126 includes or has access toother enterprise systems such as Customer Relation Management (CRM)systems, social network profile system, or other survey systems.

In one example embodiment, the graph engine 128 communicates with theenterprise application 124 to access interaction/collaboration data fromusers of the enterprise application 124. The graph engine 128 alsocommunicates with the directory application 126 to access enterpriseorganizational data. In another example embodiment, the graph engine 128communicates with the expert finder module 110 to access interactiondata from the user 134 with other users of the enterprise. The graphengine 128 communicates with the expert finder module 110 supported bythe web server 122 and identifies another enterprise user to the user134 with the programmatic client 108. In one example, the web client 112communicate with the graph engine 128 and enterprise application 124 viathe programmatic interface provided by the Application Program Interface(API) server 120.

The graph engine 128 forms a dataset comprising theinteraction/collaboration data and the enterprise organizational data.The graph engine 128 trains a machine learning model based on thedataset and forms a graph of user interactions and user expertise basedon the machine learning model. The machine learning model is describedbelow with respect FIG. 4 . The graph engine 128 receives a request fromthe expert finder module 110 to identify an expert user related to aparticular topic. The graph engine 128 ranks enterprise users based onthe topic, interaction/collaboration data of the user 134,interaction/collaboration data between enterprise users of theenterprise, and the enterprise organization data of the enterprise. Thegraph engine 128 generates a recommendation of an expert user based onthe ranking and provides the recommendation to the expert finder module110.

In another example embodiment, the graph engine 128 provides other userfunctions or features that allow the user 134 to identify otherenterprise users based on their relative influence (e.g., an influencerwho may be a user with a large social network size within theenterprise), and identify enterprise users with skills validated basedon their interactions with other enterprise users (or other usersoutside the enterprise). In another example, the enterprise application124 may validate the skills of a user based on information from othersources (e.g., social media websites that profile the user and theirskills).

The application server 118 is shown to be communicatively coupled todatabase servers 130 that facilitates access to an information storagerepository or databases 132. In an example embodiment, the databases 132includes storage devices that store information to be processed by theenterprise application 124 and the graph engine 128.

Additionally, a third-party application 116 may, for example, storeanother part of the enterprise application 124, or include a cloudstorage system. The third-party application 116 executing on athird-party server 114, is shown as having programmatic access to theapplication server 118 via the programmatic interface provided by theApplication Program Interface (API) server 120. For example, thethird-party application 116, using information retrieved from theapplication server 118, may supports one or more features or functionson a website hosted by the third party.

FIG. 2 is a graph 200 illustrating interactions between users in anenterprise, in accordance with some example embodiments. The diagramillustrates users (e.g., user 202, user 206, user 208, user 222) thatare part of an enterprise 224. Each user operates a corresponding device(not shown) using one or more client applications (not shown) tocommunicate and collaborate with other users. In one example embodiment,each peer user client applications communicate with the applicationserver 118.

For example, user 222 sends an email 210 to user 208, sends an email 220to user 206, and sends a meeting request 214 to user 202. The user 208receives the email 210 from user 222, sends an email 212 to user 202.The user 202 receives the meeting request 214 from user 222, receivesthe email 212 from user 208, and sends a meeting response 218 to user204. The user 204 receives the meeting response 218 from user 202 andsends an instant message 216 to user 206.

In one example embodiment, the graph engine 128 collects userinteraction data representing the interactions between peer usersdescribed above. In another example embodiment, the expert finder module110 collects interaction data from a corresponding user of a clientdevice. The graph engine 128 and the expert finder module 110 maycollect the interaction data for a preset period of time (e.g., aone-week interval, year to date, or other time frame).

In another example embodiment, the graph engine 128 collects userinteraction data for a user up to a preset degree of contacts. Forexample, if the preset degree is one, the interaction data for the user222 includes interaction data for user 208, user 202, and user 206. Acore working group of the user 222 would thus include user 208, user202, and user 206.

FIG. 3 is a block diagram illustrating a graph engine 128 in accordancewith one example embodiment. The graph engine 128 comprises anenterprise application interface 302, a network analysis engine 304, anetwork analysis API 306, a network analytics platform 308, a userexperience module 310, and a directory application interface 312.

The enterprise application interface 302 accesses collaboration data andtopic data from the enterprise application 124. The collaboration dataand topic data are based on user interaction data between enterpriseusers of the enterprise. For example, a first enterprise user emails asecond enterprise user a message related to a project (e.g., using emailsubject header or identifying preset keywords in the body of themessage). The collaboration data identifies the interactions between thefirst enterprise user and the second enterprise user (how often thefirst and second enterprise users communicate with each other, havemeetings, collaborate on common projects, when the first and secondenterprise users communicate, with whom the first and second enterpriseusers communicate), and identifies a topic attribute associated with thecommunications (e.g., the topic can be identified from a subject headeror from a title of a file attached to the emails). Other methods ofidentifying or extracting a topic attribute to a communication (e.g., amessage) include parsing the message for key topics related to apredefined set of topics (e.g., accounting, machine learning, project x,skill y, etc.) defined for the enterprise.

In another example embodiment, the enterprise application interface 302retrieves user interaction data from a combination of the expert findermodule 110, the web client 112, the programmatic client 108, and theenterprise application 124.

The directory application interface 312 accesses enterpriseorganizational data (e.g., user hierarchy data) from the directoryapplication 126. The enterprise organizational data include, forexample, user profile data of enterprise users of the enterprise. Forexample, an enterprise user profile of an enterprise user includes auser ID, a user email, a user department, a user manager, user groupprojects, user employment status, user skills, user expertise, userexperience, user background, any information provided by otherdepartment (e.g., Human Resource), and so forth. In another exampleembodiment, the directory application interface 312 accesses enterpriseorganizational data to other enterprise systems such as CustomerRelation Management (CRM) systems, social network profile system, orother survey systems. These systems can be internal or external to thedirectory application 126.

The network analytics platform 308 trains a machine learning model basedon a dataset that comprises the collaboration data and topic data, andenterprise organizational data. In one example embodiment, the networkanalytics platform 308 comprises the network analysis engine 304 and thenetwork analysis API 306. The network analysis engine 304 generates acollaboration-topic graph that depicts interactions between enterpriseusers relative to identified topics based on the machine learning model.The graph may indicate (e.g., enterprise user HR attributes,collaboration map (e.g., who the enterprise users communicate with),time allocation (e.g., when, how long, and how often do the userscommunicate, collaboration topics (e.g., what topic do the userscommunicate about), skills and projects (e.g., which projects are theusers collaborating on). In another example embodiment, the networkanalysis engine 304 ranks the users based on their relevance to a topicattribute based on the dataset. The ranking may be based on number andfrequency of interactions related to the topic. For example, a user willbe ranked higher with a higher number of interactions/collaborations(related to a keyword or topic) with other users of the enterprisewithin a preset duration and more frequent interactions/collaborations(related to a keyword or topic) with other users of the enterprisewithin the present duration.

The network analysis API 306 provides a client with interface access tothe results from the machine learning model generated by the networkanalytics platform 308. For example, the user experience module 310accesses data from the network analysis engine 304 via the networkanalysis API 306 to provides different types of functionalities (e.g.,user experiences). For example, the user experience includes finding anexpert user related to a topic, finding an influencer (e.g., anenterprise user having clout or influence based on their interactiondata, organization hierarchy, expertise, and enterprise user profile),and identifying enterprise users with particular skillsets.

FIG. 4 is a block diagram illustrating a network analysis engine 304 inaccordance with one example embodiment. The network analysis engine 304includes a dataset module 402, a machine learning module 404, and agraph module 406. The dataset module 402 forms a dataset based on thecollaboration data and topic data (from enterprise application interface302) and the enterprise organizational data (from directory applicationinterface 312). The machine learning module 404 includes a machinelearning engine that trains the machine learning model based on thedataset from the dataset module 402. Example features includecollaboration metrics, topic attribute, and organizational enterpriseusers network graph. Examples of organizational network graph propertiesinclude degree of connections, reach index (closeness), page index(influence index) and collaboration strength on topics. In anotherexample, the network analysis engine 304 includes a machinelearning-based natural language processor for translating free form userinput query into contextual topics search condition. The query mayinclude additional data such as skills, projects, time zone. The machinelearning module 404 performs a search and maps an expert to the userprofile of the enterprise user submitting the request.

The machine learning module 404 manages a learning model for an expert(a user with a high likelihood that the user is proficient in a specificfield or area). In one example embodiment, the machine learning module404 analyzes events on the enterprise application 124 to identify trends(e.g., a user appears to have frequent communications with other usersregarding a particular topic or subject, a user appears to have frequentmeetings related to a particular topic, a user appears to be in multiplegroup chat related a particular topic). The machine learning module 404accesses the collaboration data and topic data via the enterpriseapplication interface 302 from enterprise application 124. Using thecollaboration data and topic data, the machine learning module 404 canidentify trends. For example, the machine learning module 404 learns,based collaboration communications from a user, that the user is likelyan expert in a particular field because the user has composed manyemails on the particular topic and has collaborated on frequent occasionwith other users on projects related to the particular topic; thus,building a learning model.

Based on the learning model, the machine learning module 404 can, in oneembodiment, suggest or identify a user associated with a particularexpertise or specific topic. In a further embodiment, the machinelearning module 404 can proactively identify expert users on aparticular topic and connect a user with the expert users when themachine learning module 404 detects that the user is working on aproject related to the particular topic. In some cases, the machinelearning module 404 may present the identified expert information whenthe user appears to collaborate with other users on the particulartopic. For example, if a first user shares a document related to topic xto a second user, the machine learning module 404 identifies an expertuser on topic x to the first user with the least number of socialnetwork degree of separation from the first user (e.g., the first userand the expert user are directly connected to a common user).

In addition to learning trends regarding users who are expert in aparticular field, the machine learning module 404 also identifies trendsfor the expert users. For example, the machine learning module 404 maylearn that the expert user rarely replies to requests for assistancefrom other users who are not connected to the expert user. In anotherexample, the machine learning module 404 learns that the expert userresponse rate is higher for requests from users that are connected bytwo degrees of separation. All of the trends identified by the machinelearning module 404 may be stored at the databases 132 or provided tothe graph module 406 for further processing.

In another example embodiment, the network analysis engine 304 generatesranks and relevance scores for experts matching requestors searchcriterion and consider additional factors/features (e.g., such asnetwork degree of connection of expert from requestor, reach index ofexpert, expert page rank, collaboration time of expert on topic, pastrequests response times from experts, request response rate of experts,referral recommendations, open requests in experts queue).

The graph module 406 generates a collaboration-topic graph based on themachine learning model. FIG. 12 illustrates an example of acollaboration-topic graph.

FIG. 5 is a block diagram illustrating a user experience module inaccordance with one example embodiment. The user experience module 310includes an expert finder module 502, an influencer module 504, a skillsmodule 506, an organization network visualization module 508.

The user experience module 310 makes use of the machine learning modeland the graph generated by the network analysis engine 304 to providedifferent types of user experiences. The expert finder module 502enables an enterprise user to request for an expert by identifying atopic attribute. The expert finder module 502 triggers the anonymizedexpert recommendation workflow 510 to identify the expert based oncollaboration-topic graph of graph module 406. For example, the expertfinder module 502 identifies an expert user based oninteraction/collaboration metrics from the expert/requestor, degree ofconnections between the expert and the requestor, the expert userprofile, the requestor user profile.

In one example embodiment, the anonymized expert recommendation workflow510 protects the privacy of experts in the enterprise by not revealingan identification of the expert to the requestor without consent orapproval from the expert. As such, the requestor does not receive anyidentifiable information about the experts during the search process.The requestor obtains information about an expert when the expertconsents and accepts a request sent by requestor. In one exampleembodiment, the requestor also remains anonymous to the expert (e.g.,the expert does not know the identification of the requestor).

The influencer module 504 triggers an influencer identification workflow512 that uses the graph to identify an enterprise user considered to bean influencer. For example, a user is considered an influencer whencollaboration metrics of the user exceed a preset threshold. Forexample, a user who is invited to many meetings, who leads a team, whocollaborates with many users may be considered an influencer. Theinfluencer module 504 may use the graph to identify influencers based onthe collaboration metrics of users, topic metrics, and enterpriseorganizational metrics.

The skills module 506 triggers a skills marketplace workflow 516 thatuses the graph to identify users with specific skillsets. Traditionalsystems rely on the users to enter their skillset attributes in adatabase. Even if the data is entered by the user, the users rarelyupdate their skillset attributes in the database. Moreover, skillterminology may be specific. As such, there are some organizationallevel topics, niche areas that do not get added to the skills databaseor user profile. The skills module 506 leverages organizational networkgraph analysis (from graph module 406) for accurate recommendations oridentification of users who fit a particular skillset. For example, theuser profile may be based on a template that only specify a limitednumber of values of skill attribute (e.g., skill x, skill y, skill z).The skills module 506 generates a new value (e.g., skill a) for theskill attribute based on the graph.

The organization network visualization module 508 triggers an enterpriseuser graph visualization workflow 514 that causes a graphicalrepresentation of the collaboration-topic graph from graph module 406.FIG. 12 illustrates an example of a collaboration-topic graph.

FIG. 6 is a flow diagram illustrating a method 600 for generating agraph in accordance with one example embodiment. Operations in themethod 600 may be performed by the graph engine 128, using components(e.g., modules, engines) described above with respect to FIG. 3 .Accordingly, the method 600 is described by way of example withreference to the graph engine 128. However, it shall be appreciated thatat least some of the operations of the method 600 may be deployed onvarious other hardware configurations or be performed by similarcomponents residing elsewhere. For example, some of the operations maybe performed at the expert finder module 110.

At block 602, the network analytics platform 308 accesses collaborationdata and topic data for users of an enterprise application from theenterprise application 124 via the enterprise application interface 302.At block 604, the network analytics platform 308 accesses enterpriseorganizational data from the directory application 126 via the directoryapplication interface 312. At block 606, the network analytics platform308 generates a unified collaboration-topic graph based on thecollaboration data, topic data, and enterprise organization data.

FIG. 7 is a flow diagram illustrating a method 700 for identifying anexpert user in accordance with one example embodiment. Operations in themethod 700 may be performed by the graph engine 128, using components(e.g., modules, engines) described above with respect to FIG. 3 .Accordingly, the method 700 is described by way of example withreference to the graph engine 128. However, it shall be appreciated thatat least some of the operations of the method 700 may be deployed onvarious other hardware configurations or be performed by similarcomponents residing elsewhere. For example, some of the operations maybe performed at the expert finder module 110.

At block 702, the machine learning module 404 trains a machine learningmodel based on the collaboration data, topic data, and enterpriseorganizational data. At block 704, the expert finder module 502 receivesa request to identify an expert user associated with topic attributefrom a first enterprise user. At block 706, the expert finder module 502ranks users by applying the machine learning model to the topicattribute and relative to the first enterprise user. At block 708, theexpert finder module 502 identifies a second enterprise user from topranked users. The process can continue at block 710.

FIG. 8 is a flow diagram illustrating a method 800 for identifying anexpert user in accordance with one example embodiment. Operations in themethod 800 may be performed by the graph engine 128, using components(e.g., modules, engines) described above with respect to FIG. 3 .Accordingly, the method 800 is described by way of example withreference to the graph engine 128. However, it shall be appreciated thatat least some of the operations of the method 800 may be deployed onvarious other hardware configurations or be performed by similarcomponents residing elsewhere. For example, some of the operations maybe performed at the expert finder module 110.

The process may continue from block 710. At block 802, the expert findermodule 502 generates an invitation request to the second enterprise useron behalf of the first enterprise user. In one example embodiment, theinvitation request identifies the first enterprise user (e.g., therequestor). In another example embodiment, the invitation request doesnot identify the first enterprise user (e.g., the requestor) and keepthe first enterprise anonymous.

At decision block 804, the expert finder module 502 determines whetherthe second enterprise user accepts the invitation request. If theinvitation request is accepted, the process moves to block 808. If theinvitation request is declined, the process moves to block 806.

At block 806, the expert finder module 502 communicates the rejection ofthe invitation request to the first enterprise user while maintainingthe identity of the second enterprise user anonymous to the firstenterprise user.

At block 808, the expert finder module 502 communicates the acceptanceof the invitation request and the identity of the second enterprise userto the first enterprise user. The process ends at end block 810.

FIG. 9 is a flow diagram illustrating a method 900 for identifying aninfluencer in accordance with one example embodiment. Operations in themethod 900 may be performed by the graph engine 128, using components(e.g., modules, engines) described above with respect to FIG. 3 .Accordingly, the method 900 is described by way of example withreference to the graph engine 128. However, it shall be appreciated thatat least some of the operations of the method 900 may be deployed onvarious other hardware configurations or be performed by similarcomponents residing elsewhere. For example, some of the operations maybe performed at the expert finder module 110.

At block 902, the machine learning module 404 trains a machine learningmodel based on the collaboration data, topic data, and enterpriseorganizational data. At block 904, the influencer module 504 receives arequest to identify an influencer from a first enterprise user. At block906, the influencer module 504 identifies a second enterprise user usingthe machine learning model based on the request.

FIG. 10 is a flow diagram illustrating a method 1000 for identifyingskilled users in accordance with one example embodiment. Operations inthe method 1000 may be performed by the graph engine 128, usingcomponents (e.g., modules, engines) described above with respect to FIG.3 . Accordingly, the method 1000 is described by way of example withreference to the graph engine 128. However, it shall be appreciated thatat least some of the operations of the method 1000 may be deployed onvarious other hardware configurations or be performed by similarcomponents residing elsewhere. For example, some of the operations maybe performed at the expert finder module 110.

At block 1002, the machine learning module 404 trains a machine learningmodel based on the collaboration data, topic data, and enterpriseorganizational data. At block 1004, the skills module 506 receives arequest to identify skilled enterprise users related to a topic. Atblock 1006, the skills module 506 identifies a plurality of enterpriseusers using the machine learning model based on the request.

FIG. 11 is a flow diagram illustrating a method 1100 for generating aunified graph in accordance with one example embodiment. Operations inthe method 1100 may be performed by the graph engine 128, usingcomponents (e.g., modules, engines) described above with respect to FIG.3 . Accordingly, the method 1100 is described by way of example withreference to the graph engine 128. However, it shall be appreciated thatat least some of the operations of the method 1100 may be deployed onvarious other hardware configurations or be performed by similarcomponents residing elsewhere. For example, some of the operations maybe performed at the expert finder module 110.

At block 1102, the machine learning module 404 trains a machine learningmodel based on the collaboration data, topic data, and enterpriseorganizational data. At block 1104, the organization networkvisualization module 508 generates a unified(collaboration-topic-organizational) graph based on the machine learningmodel.

FIG. 12 illustrates an example of a unified graph 1200 in accordancewith one example embodiment. The unified graph 1200 illustratesinteractions between person A 1202, customer A 1204, person B 1214,person C 1220, customer B 1222, and person D 1216 related to topic 11206, project 1 1210, skill 1 1208, project 2 1212, topic 2 1218, andskill 2 1224. The collaboration metrics of person A 1202 indicate aninfluence index of 0.9, a centrality index of 20, and a reach index of0.8. The user profile of person A 1202 indicates that his/her role isResearch and Development (R&D).

In block 1302, routine 1300 identifies collaboration metrics based onuser interaction data of users of an application from an enterprise. Inblock 1304, routine 1300 accesses enterprise organizational data of theenterprise. In block 1306, routine 1300 identifies topic data from theuser interaction data and the enterprise organizational data. In block1308, routine 1300 trains a machine learning model based on thecollaboration metrics, the enterprise organizational data, and the topicdata.

FIG. 14 is a diagrammatic representation of the machine 1400 withinwhich instructions 1408 (e.g., software, a program, an application, anapplet, an app, or other executable code) for causing the machine 1400to perform any one or more of the methodologies discussed herein may beexecuted. For example, the instructions 1408 may cause the machine 1400to execute any one or more of the methods described herein. Theinstructions 1408 transform the general, non-programmed machine 1400into a particular machine 1400 programmed to carry out the described andillustrated functions in the manner described. The machine 1400 mayoperate as a standalone device or may be coupled (e.g., networked) toother machines. In a networked deployment, the machine 1400 may operatein the capacity of a server machine or a client machine in aserver-client network environment, or as a peer machine in apeer-to-peer (or distributed) network environment. The machine 1400 maycomprise, but not be limited to, a server computer, a client computer, apersonal computer (PC), a tablet computer, a laptop computer, a netbook,a set-top box (STB), a PDA, an entertainment media system, a cellulartelephone, a smart phone, a mobile device, a wearable device (e.g., asmart watch), a smart home device (e.g., a smart appliance), other smartdevices, a web appliance, a network router, a network switch, a networkbridge, or any machine capable of executing the instructions 1408,sequentially or otherwise, that specify actions to be taken by themachine 1400. Further, while only a single machine 1400 is illustrated,the term “machine” shall also be taken to include a collection ofmachines that individually or jointly execute the instructions 1408 toperform any one or more of the methodologies discussed herein.

The machine 1400 may include processors 1402, memory 1404, and I/Ocomponents 1442, which may be configured to communicate with each othervia a bus 1444. In an example embodiment, the processors 1402 (e.g., aCentral Processing Unit (CPU), a Reduced Instruction Set Computing(RISC) processor, a Complex Instruction Set Computing (CISC) processor,a Graphics Processing Unit (GPU), a Digital Signal Processor (DSP), anASIC, a Radio-Frequency Integrated Circuit (RFIC), another processor, orany suitable combination thereof) may include, for example, a processor1406 and a processor 1410 that execute the instructions 1408. The term“processor” is intended to include multi-core processors that maycomprise two or more independent processors (sometimes referred to as“cores”) that may execute instructions contemporaneously. Although FIG.14 shows multiple processors 1402, the machine 1400 may include a singleprocessor with a single core, a single processor with multiple cores(e.g., a multi-core processor), multiple processors with a single core,multiple processors with multiples cores, or any combination thereof.

The memory 1404 includes a main memory 1412, a static memory 1414, and astorage unit 1416, both accessible to the processors 1402 via the bus1444. The main memory 1404, the static memory 1414, and storage unit1416 store the instructions 1408 embodying any one or more of themethodologies or functions described herein. The instructions 1408 mayalso reside, completely or partially, within the main memory 1412,within the static memory 1414, within machine-readable medium 1418within the storage unit 1416, within at least one of the processors 1402(e.g., within the processor's cache memory), or any suitable combinationthereof, during execution thereof by the machine 1400.

The I/O components 1442 may include a wide variety of components toreceive input, provide output, produce output, transmit information,exchange information, capture measurements, and so on. The specific I/Ocomponents 1442 that are included in a particular machine will depend onthe type of machine. For example, portable machines such as mobilephones may include a touch input device or other such input mechanisms,while a headless server machine will likely not include such a touchinput device. It will be appreciated that the I/O components 1442 mayinclude many other components that are not shown in FIG. 14 . In variousexample embodiments, the I/O components 1442 may include outputcomponents 1428 and input components 1430. The output components 1428may include visual components (e.g., a display such as a plasma displaypanel (PDP), a light emitting diode (LED) display, a liquid crystaldisplay (LCD), a projector, or a cathode ray tube (CRT)), acousticcomponents (e.g., speakers), haptic components (e.g., a vibratory motor,resistance mechanisms), other signal generators, and so forth. The inputcomponents 1430 may include alphanumeric input components (e.g., akeyboard, a touch screen configured to receive alphanumeric input, aphoto-optical keyboard, or other alphanumeric input components),point-based input components (e.g., a mouse, a touchpad, a trackball, ajoystick, a motion sensor, or another pointing instrument), tactileinput components (e.g., a physical button, a touch screen that provideslocation and/or force of touches or touch gestures, or other tactileinput components), audio input components (e.g., a microphone), and thelike.

In further example embodiments, the I/O components 1442 may includebiometric components 1432, motion components 1434, environmentalcomponents 1436, or position components 1438, among a wide array ofother components. For example, the biometric components 1432 includecomponents to detect expressions (e.g., hand expressions, facialexpressions, vocal expressions, body gestures, or eye tracking), measurebiosignals (e.g., blood pressure, heart rate, body temperature,perspiration, or brain waves), identify a person (e.g., voiceidentification, retinal identification, facial identification,fingerprint identification, or electroencephalogram-basedidentification), and the like. The motion components 1434 includeacceleration sensor components (e.g., accelerometer), gravitation sensorcomponents, rotation sensor components (e.g., gyroscope), and so forth.The environmental components 1436 include, for example, illuminationsensor components (e.g., photometer), temperature sensor components(e.g., one or more thermometers that detect ambient temperature),humidity sensor components, pressure sensor components (e.g.,barometer), acoustic sensor components (e.g., one or more microphonesthat detect background noise), proximity sensor components (e.g.,infrared sensors that detect nearby objects), gas sensors (e.g., gasdetection sensors to detection concentrations of hazardous gases forsafety or to measure pollutants in the atmosphere), or other componentsthat may provide indications, measurements, or signals corresponding toa surrounding physical environment. The position components 1438 includelocation sensor components (e.g., a GPS receiver component), altitudesensor components (e.g., altimeters or barometers that detect airpressure from which altitude may be derived), orientation sensorcomponents (e.g., magnetometers), and the like.

Communication may be implemented using a wide variety of technologies.The I/O components 1442 further include communication components 1440operable to couple the machine 1400 to a network 1420 or devices 1422via a coupling 1424 and a coupling 1426, respectively. For example, thecommunication components 1440 may include a network interface componentor another suitable device to interface with the network 1420. Infurther examples, the communication components 1440 may include wiredcommunication components, wireless communication components, cellularcommunication components, Near Field Communication (NFC) components,Bluetooth® components (e.g., Bluetooth® Low Energy), WiFi® components,and other communication components to provide communication via othermodalities. The devices 1422 may be another machine or any of a widevariety of peripheral devices (e.g., a peripheral device coupled via aUSB).

Moreover, the communication components 1440 may detect identifiers orinclude components operable to detect identifiers. For example, thecommunication components 1440 may include Radio Frequency Identification(RFID) tag reader components, NFC smart tag detection components,optical reader components (e.g., an optical sensor to detectone-dimensional bar codes such as Universal Product Code (UPC) bar code,multi-dimensional bar codes such as Quick Response (QR) code, Azteccode, Data Matrix, Dataglyph, MaxiCode, PDF417, Ultra Code, UCC RSS-2Dbar code, and other optical codes), or acoustic detection components(e.g., microphones to identify tagged audio signals). In addition, avariety of information may be derived via the communication components1440, such as location via Internet Protocol (IP) geolocation, locationvia Wi-Fi® signal triangulation, location via detecting an NFC beaconsignal that may indicate a particular location, and so forth.

The various memories (e.g., memory 1404, main memory 1412, static memory1414, and/or memory of the processors 1402) and/or storage unit 1416 maystore one or more sets of instructions and data structures (e.g.,software) embodying or used by any one or more of the methodologies orfunctions described herein. These instructions (e.g., the instructions1408), when executed by processors 1402, cause various operations toimplement the disclosed embodiments.

The instructions 1408 may be transmitted or received over the network1420, using a transmission medium, via a network interface device (e.g.,a network interface component included in the communication components1440) and using any one of a number of well-known transfer protocols(e.g., hypertext transfer protocol (HTTP)). Similarly, the instructions1408 may be transmitted or received using a transmission medium via thecoupling 1426 (e.g., a peer-to-peer coupling) to the devices 1422.

Although an overview of the present subject matter has been describedwith reference to specific example embodiments, various modificationsand changes may be made to these embodiments without departing from thebroader scope of embodiments of the present invention. For example,various embodiments or features thereof may be mixed and matched or madeoptional by a person of ordinary skill in the art. Such embodiments ofthe present subject matter may be referred to herein, individually orcollectively, by the term “invention” merely for convenience and withoutintending to voluntarily limit the scope of this application to anysingle invention or present concept if more than one is, in fact,disclosed.

The embodiments illustrated herein are believed to be described insufficient detail to enable those skilled in the art to practice theteachings disclosed. Other embodiments may be used and derivedtherefrom, such that structural and logical substitutions and changesmay be made without departing from the scope of this disclosure. TheDetailed Description, therefore, is not to be taken in a limiting sense,and the scope of various embodiments is defined only by the appendedclaims, along with the full range of equivalents to which such claimsare entitled.

Moreover, plural instances may be provided for resources, operations, orstructures described herein as a single instance. Additionally,boundaries between various resources, operations, modules, engines, anddata stores are somewhat arbitrary, and particular operations areillustrated in a context of specific illustrative configurations. Otherallocations of functionality are envisioned and may fall within a scopeof various embodiments of the present invention. In general, structuresand functionality presented as separate resources in the exampleconfigurations may be implemented as a combined structure or resource.Similarly, structures and functionality presented as a single resourcemay be implemented as separate resources. These and other variations,modifications, additions, and improvements fall within a scope ofembodiments of the present invention as represented by the appendedclaims. The specification and drawings are, accordingly, to be regardedin an illustrative rather than a restrictive sense.

EXAMPLES

Example 1 is a computer-implemented method comprising: identifyingcollaboration metrics based on user interaction data of users of anapplication from an enterprise; accessing enterprise organizational dataof the enterprise; identifying topic data from the user interaction dataand the enterprise organizational data; and training a machine learningmodel based on the collaboration metrics, the enterprise organizationaldata, and the topic data.

Example 2 includes example 1, further comprising: accessing the userinteraction data from the application, the user interaction dataindicating interactions among the users using the application at theenterprise.

Example 3 includes any of the above examples, wherein the enterpriseorganizational data indicates a profile for each user, and a networkrelation graph of the users.

Example 4 includes any of the above examples, wherein the profile of foreach user comprises a human resource attribute, a skill attribute, and aproject attribute, and wherein the network relation graph indicates adegree of connections, a closeness index, and an influence index.

Example 5 includes any of the above examples, further comprising:receiving, from a first device of a first user, an expert requestindicating a topic attribute; and identifying, using the machinelearning model, a second user corresponding to the topic attribute.

Example 6 includes any of the above examples, wherein identifying thesecond user further comprises: using the machine learning model, rankingone or more users as an expert for the topic attribute based on socialnetwork metrics between the first user and the users of the application,and profiles of the users of the application; and identifying the seconduser from the ranked one or more users.

Example 7 includes any of the above examples, further comprising: inresponse to identifying the second user, providing an anonymousrecommendation of the second user to the first user; communicating theexpert request to the second user; in response to communicating theexpert request, receiving an approval response from a second device ofthe second user; in response to receiving the approval response from thesecond device, providing an identification of the second user to thefirst device.

Example 8 includes any of the above examples, wherein the machinelearning model identifies the second user based on a network degree ofconnection between the first user and the second user, network metricsof the first user and the second user, and topics associated with thesecond user.

Example 9 includes any of the above examples, wherein the collaborationmetrics for a user indicate at least one of a collaboration topic, acollaboration pattern, a collaboration time on a topic from the user, anumber of past requests for the user, response times from the user, or arequest-response rate of the user.

Example 10 includes any of the above examples, further comprising:updating collaboration metrics based on updated user interaction data ofthe users; accessing updated enterprise organizational data of theenterprise; updating the identified topic data from the updated userinteraction data and the updated enterprise organizational data; andretraining the learning machine model based on the updated collaborationmetrics, the updated enterprise organizational data, and the updatedidentified topic data, wherein the application comprises at least one ofan email application, an instant message application, a document sharingapplication, a meeting application, or a calendar application.

What is claimed is:
 1. A computer-implemented method comprising:identifying collaboration metrics based on user interaction data ofusers of an application from an enterprise; accessing enterpriseorganizational data of the enterprise; identifying topic data from theuser interaction data and the enterprise organizational data; training,at a server, a machine learning model based on the collaborationmetrics, the enterprise organizational data, and the topic data;identifying, using the machine learning model, a second user as anexpert corresponding to a topic attribute; and causing a display of anidentification of the second user on a first device of a first user. 2.The computer-implemented method of claim 1, further comprising:identifying reply trends from expert users based on a number of degreeof separation from users requesting expert assistance from the expertusers, wherein training the machine learning model is based on the replytrends.
 3. The computer-implemented method of claim 1, furthercomprising: updating, at the server, a directory application based onthe machine learning model by updating the enterprise organizationaldata with the topic data and skill ranking data of the expert.
 4. Thecomputer-implemented method of claim 1, wherein identifying the seconduser comprises: ranking one or more users as the expert for the topicattribute based on social network metrics between the first user and theusers of the application, and profiles of the users of the application,profiles of the users comprising a reach index, an expert page rank, acollaboration time on a first topic, past requests response times,request response rates, referral recommendations, and open requests inrequest queues of the users.
 5. The computer-implemented method of claim1, wherein the user interaction data include collaboration data and thetopic data from a combination of emails, meeting requests, meetingresponses, and instant messages associated with the users of theapplication.
 6. The computer-implemented method of claim 5, wherein thecollaboration data identify enterprise users interactions between usersof the application, the enterprise users interactions indicating howoften users communicate with each other, how often the users holdmeetings, how often the users collaborate on common projects, when theusers communicate with each other.
 7. The computer-implemented method ofclaim 5, wherein the topic data identify topic attributes from acombination of emails subject header, preset keywords in a body ofemails or messages, and a title of a file attached to emails, whereinidentifying the topic data further comprises: extracting the topicattributes from enterprise users communication; and parsing messages forkey topics related to a set of topics predefined for the enterprise. 8.The computer-implemented method of claim 1, further comprising:operating, by using the machine learning model, one of an anonymizedexpert recommendation workflow, an influencer identification workflow, askills marketplace workflow, or an enterprise user graph visualizationworkflow.
 9. The computer-implemented method of claim 8, wherein theanonymized expert recommendation workflow is configured to: identify,using the machine learning model, a third user as the expert for thetopic attribute; and in response to identifying the third user, providean anonymous recommendation of the third user to the first user; inresponse to identifying the third user, communicate an expert request tothe third user; in response to communicating the expert request, receivean approval response from a third device of the third user; and inresponse to receiving the approval response from the third device,provide an identification of the third user to the first device.
 10. Thecomputer-implemented method of claim 8, wherein the influenceridentification workflow is configured to: identify an influencer userbased on collaboration metrics of the influencer user exceeding a presetcollaboration metric thresholds, wherein the preset collaboration metricthresholds indicate thresholds of how often the influencer user isinvited to meetings, whether the influencer user leads a team based on aprofile of the influencer user, and a number of users the influenceruser collaborates with.
 11. The computer-implemented method of claim 8,wherein the skills marketplace workflow is configured to: generatingskill attribute values of users based on the machine learning model; andidentify a skillset user with specific skillsets based on the skillattribute values of the skillset user.
 12. The computer-implementedmethod of claim 8, wherein the enterprise user graph visualizationworkflow is configured to: cause a display of a graphical representationof a collaboration-topic graph based on the machine learning model. 13.The computer-implemented method of claim 1, wherein the enterpriseorganizational data indicates a profile for each user, and a networkrelation graph of the users.
 14. The computer-implemented method ofclaim 13, wherein the profile of for each user comprises a humanresource attribute, a skill attribute, and a project attribute, whereinthe network relation graph indicates a degree of connections, acloseness index, and an influence index.
 15. The computer-implementedmethod of claim 1, wherein the machine learning model identifies thesecond user based on a network degree of connection between the firstuser and the second user, network metrics of the first user and thesecond user, topics associated with the second user, a number of emailscomposed by the second user where the emails indicate a first topic, anda frequency of collaboration between the second user and other users onprojects related to the first topic.
 16. The computer-implemented methodof claim 1, wherein the collaboration metrics for a user indicate atleast one of a collaboration topic, a collaboration pattern, acollaboration time on a topic from the user, a number of past requestsfor the user, response times from the user, or a request-response rateof the user.
 17. The computer-implemented method of claim 1, furthercomprising: updating collaboration metrics based on updated userinteraction data of the users; accessing updated enterpriseorganizational data of the enterprise; updating the identified topicdata from the updated user interaction data and the updated enterpriseorganizational data; and retraining the machine learning model based onthe updated collaboration metrics, the updated enterprise organizationaldata, and the updated identified topic data.
 18. Thecomputer-implemented method of claim 17, wherein the applicationcomprises at least one of an email application, an instant messageapplication, a document sharing application, a meeting application, or acalendar application.
 19. A server comprising: one or more processors;and a memory storing instructions that, when executed by the one or moreprocessors, configure the server to perform operations comprising:identifying collaboration metrics based on user interaction data ofusers of an application from an enterprise; accessing enterpriseorganizational data of the enterprise; identifying topic data from theuser interaction data and the enterprise organizational data; training,at the server, a machine learning model based on the collaborationmetrics, the enterprise organizational data, and the topic data;identifying, using the machine learning model, a second user as anexpert corresponding to a topic attribute; and causing a display of anidentification of the second user on a first device of a first user. 20.A non-transitory computer-readable storage medium, the computer-readablestorage medium including instructions that when executed by a computer,cause the computer to perform operations comprising: identifyingcollaboration metrics based on user interaction data of users of anapplication from an enterprise; accessing enterprise organizational dataof the enterprise; identifying topic data from the user interaction dataand the enterprise organizational data; training, at the computer, amachine learning model based on the collaboration metrics, theenterprise organizational data, and the topic data; identifying, usingthe machine learning model, a second user as an expert corresponding toa topic attribute; and causing a display of an identification of thesecond user on a first device of a first user.